#include "Escalera.h"

#include <glm\gtc\matrix_transform.hpp>


void Escalera::init(const glm::vec3 &DireccionLuz) {
	this->m_cubo.init(DireccionLuz, "ShadowTextureShader.vert", "ShadowTextureShader.frag");	/*
	this->m_cubo.init(DireccionLuz, "ShadowRealmShader.vert", "ShadowRealmShader.frag");	// */

	this->m_cubo.setMaterial( glm::vec3(0.58f, 0.58f, 0.6f), glm::vec3(0.145f, 0.145f, 0.15f), glm::vec3(0.5f, 0.5f, 0.5f), 16.0f );
	this->m_cubo.setTextura("Escalera.dds");
}


void Escalera::renderizar(const glm::mat4 &matVista, const glm::mat4 &matProyeccion, const glm::mat4 &matModelo) const {
	// Hay que escalarlo a 0.5 de alto(z), 1.5 de largo(x) y 0.5 de profundidad(y)
	glm::mat4 matModelEscalon = glm::scale(matModelo, glm::vec3(0.5f, 0.165f, 0.125f));

	// Lo coloca sobre el plano xy
	matModelEscalon = glm::translate(matModelEscalon, glm::vec3(0.0f, 0.0f, 1.0f));

	// Son 6 escalones de 0.5 metros de alto cada uno
	for (int i = 0; i < 12; ++i){
		float translacion = 2.0f * i;	// x2 porque las dimensiones originales del cubo eran 2x2x2
		glm::mat4 matModelo2 = glm::translate(matModelEscalon, glm::vec3(0.0f, translacion, translacion));
		this->m_cubo.renderizar(matVista, matProyeccion, matModelo2);
	}
}


